package cn.jsj.invite.service;

import cn.jsj.invite.pojo.InvitationInfo;
import cn.jsj.invite.pojo.SchoolInfo;
import cn.jsj.invite.pojo.StudentEnt;

import java.util.List;

public interface SchoolService {

    /**
     * 获取学校的简单信息
     *
     * @return 学校简单信息集合
     */
    List<SchoolInfo> listSchoolSimpleInfo();

    /**
     * 根据ID获取某个学校的信息
     *
     * @param id 学校ID
     * @return 学校对象
     */
    SchoolInfo getOneSchoolById(Integer id);

    /**
     * 根据姓名模糊查询学生
     *
     * @param schoolId 学校ID
     * @param sutName  学生姓名
     * @return 学生信息集合
     */
    List<StudentEnt> listStudentsByName(Integer schoolId, String sutName);

    /**
     * 根据学号查询学生
     *
     * @param schoolId 学校ID
     * @param number   学生学号
     * @return 学生对象
     */
    StudentEnt getOneStudentByNumber(Integer schoolId, String number);

    /**
     * 根据院系查询学生
     *
     * @param schoolId 学校ID
     * @param faculty  学院名称
     * @return 学生信息集合
     */
    List<StudentEnt> listStudentsByFaculty(Integer schoolId, String faculty);

    /**
     * 学生注册信息审核通过
     *
     * @param schoolId      学校ID
     * @param schoolAdminId 学校管理员ID
     * @param stuId         待审核学生ID
     * @return 成功1，否则0
     */
    Integer reviewStudentRegister(Integer schoolId, Integer schoolAdminId, Integer stuId);

    /**
     * 帖子审核通过
     *
     * @param schoolId      学校ID
     * @param schoolAdminId 学校管理员ID
     * @param postId        帖子ID
     * @return 成功1，否则0
     */
    Integer reviewInvitation(Integer schoolId, Integer schoolAdminId, Integer postId);


    /**
     * 学校管理员查看所有待审核的帖子
     *
     * @param schoolId      学校ID
     * @param schoolAdminId 学校管理员ID
     * @return 帖子信息集合
     */
    List<InvitationInfo> listInvitationNeedApprove(Integer schoolId, Long schoolAdminId);

    /**
     * 学校管理员删除帖子
     *
     * @param pageId   帖子ID
     * @param schoolId 学校ID
     * @param id       管理员ID
     * @return 1:删除成功  0：失败
     */
    Integer deletePageByPageId(int pageId, int schoolId, int id);

    /**
     * 管理员修改密码
     *
     * @param oldPwd  旧密码
     * @param newPwd  新密码
     * @param adminId 管理员ID
     * @return 成功1，否则0
     */
    Integer updatePasswordByOldPwdAndAdminId(String oldPwd, String newPwd, int adminId);

    /**
     * 修改学校管理员的联系方式
     *
     * @param adminId 学校管理员ID
     * @param phone   手机号
     * @return 成功1，否则0
     */
    Integer updateSchoolAdminConcat(Integer adminId, String phone);

    /**
     * 查询学校所有待审核的学生信息
     *
     * @param adminId  学校管理员ID
     * @param schoolId 学校ID
     * @return 学生信息对象集合
     */
    List<StudentEnt> listStudentNeedApprove(Integer adminId, Integer schoolId);

    /**
     * 学校修改学生密码
     *
     * @param stuId       学生ID
     * @param newPassword 新密码
     * @return 成功1，否则0
     */
    Integer schoolUpdatePassword(Integer stuId, String newPassword);

    /**
     * 学校管理员禁用学生账号
     *
     * @param stuId 学生ID
     * @return 成功1，否则0
     */
    Integer disableStudentById(Integer stuId);

    /**
     * 学校查询所有企业发布的帖子
     *
     * @param schoolId 学校ID
     * @return 企业帖子信息
     */
    List<InvitationInfo> schoolFindAllEnterprise(Integer schoolId);


}
